import { defineStore } from 'pinia';
import type { Ref } from 'vue';
import { ref } from 'vue';

// 定义用户信息类型
interface UserInfo {
  name: string;
  role: string;
}

export const useUserStore = defineStore('user', () => {
  // 直接定义响应式状态（无需包裹在对象中）
  const token: Ref<string> = ref('');
  const userInfo: Ref<UserInfo> = ref({ name: '', role: '' });

  // 定义操作方法
  const setUserInfo = (info: UserInfo) => {
    userInfo.value = info;
  };

  const setToken = (newToken: string) => {
    token.value = newToken;
  };

  return { 
    token, 
    userInfo, 
    setUserInfo, 
    setToken 
  };
}, {
  persist: {
    enabled: true,
    strategies: [
      {
        key: 'my-admin-user',
        storage: localStorage,
        // 直接指定根状态字段（因为现在token/userInfo是顶层属性）
        paths: ['token', 'userInfo'] 
      }
    ]
  }
});